package com.lwd.spring.study.bean;

import org.springframework.web.context.ServletConfigAware;

import javax.servlet.ServletConfig;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * @Author: 刘东（挂兰）
 * @Date: 2023/12/12 21:48:32
 * @Description:
 * 需要@Component等注解修饰
 * 重要的
 * ServletContextAware
 * ServletConfigAware
 */
/**
 * ServletContextAware接口可以让Bean获取到ServletContext对象，通过这个对象，我们可以方便地进行Web项目开发。常见的应用场景包括：
 *
 * 获取Web项目的一些信息，如上下文路径等
 */
//public class MyBean implements ServletContextAware {
//    private ServletContext servletContext;
//
//    @Override
//    public void setServletContext(ServletContext servletContext) {
//        this.servletContext = servletContext;
//    }
//
//    public void doSomething() {
//        // 获取上下文路径
//        String contextPath = servletContext.getContextPath();
//        // ...
//    }
//}

/**
 * ServletConfigAware接口可以让Bean获取到ServletConfig对象，通过这个对象，我们可以方便地获取Servlet的相关信息。常见的应用场景包括：
 *
 * 获取Servlet的名称
 * 获取Servlet的初始化参数
  */
public class MyWebBean extends HttpServlet implements ServletConfigAware {

    private ServletConfig servletConfig;

    @Override
    public void setServletConfig(ServletConfig servletConfig) {
        this.servletConfig = servletConfig;
    }

    @Override
    public void doGet(HttpServletRequest request, HttpServletResponse response) {
        // 获取Servlet的名称
        String servletName = servletConfig.getServletName();
        // 获取Servlet的初始化参数
        String value = servletConfig.getInitParameter("key");
        // ...
    }
}
